package ;

class Main
{
	
	static function main () {
    
		PrinterMacro.printExpr ( function (a:String) { return "hi"; } );
		PrinterMacro.printExpr ( function < T:(Array<String>, Int) > (a:T, arr:Array < String, Int > ) { return "hi"; } );
		PrinterMacro.printExpr ( { var a:String; var b: { dump:String }; var c: { public var hi(getHi, setHi):String; } } );
		PrinterMacro.printExpr ( for (a in args) trace(a) );
		PrinterMacro.printExpr ( for (a in args) trace(a) );
		
		PrinterMacro.printExpr ( try { doIt(); } catch (s:String) trace("string") catch (d:Dynamic) trace("dynamic") );
		PrinterMacro.printExpr ( { var x : Array<String, Foo> = new Array<String, Foo>();} );
		PrinterMacro.printExpr ( { var x : Array<String, Foo> = new Array<String, Foo>();} );
		PrinterMacro.printExpr ( { foo = 5; } );
	
    
		
		
	}
		
	
	
}
